package Control;
import javax.swing.ButtonGroup;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import UserInterface.AdminFrame;
import UserInterface.CustomerFrame;
import Users.Admin;
import Users.Customer;
import Users.User;
import Users.UsersData;
public class UserDialog {
private JTextField username;
private JTextField password;
private JRadioButton adminButton;
private JRadioButton customerButton;
private ButtonGroup group;
private UsersData usersData;
public UserDialog() {
username = new JTextField(10);
password = new JPasswordField(10);
adminButton = new JRadioButton("Admin");
customerButton = new JRadioButton("Customer");
group = new ButtonGroup();
group.add(adminButton);
group.add(customerButton);
usersData = new UsersData();
usersData.updateUsers();
System.out.println("Initial users");
System.out.println("******************************************");
usersData.seeAllUsers();
int optionExisting = JOptionPane.showConfirmDialog(null, "Are you an existing user ?");
if (optionExisting == JOptionPane.YES_OPTION)
authenticateExistingUser();
else if (optionExisting == JOptionPane.NO_OPTION) {
int optionCreate = JOptionPane.showConfirmDialog(null, "Create account ?");
if (optionCreate == JOptionPane.YES_OPTION) {
createAccount();
usersData.updateUsers();
System.out.println("Updated users");
System.out.println("******************************************");
usersData.seeAllUsers();
} else
System.exit(0);
} else
System.exit(0);
}
private void createAccount() {
Object[] message = { "Choose Username:", username, "Choose Password:", password, "Choose user state",
adminButton, customerButton };
int option = JOptionPane.showConfirmDialog(null, message, "Create Account", JOptionPane.OK_CANCEL_OPTION);
if (option == JOptionPane.OK_OPTION) {
if (adminButton.isSelected()) {
usersData.addUser(new Admin(username.getText(), password.getText()));
new AdminFrame(username.getText());
} else if (customerButton.isSelected()) {
usersData.addUser(new Customer(username.getText(), password.getText()));
new CustomerFrame(username.getText());
} else if (!(adminButton.isSelected()) && (!(customerButton.isSelected()))) {
JOptionPane.showMessageDialog(null, "Please select User's state", "Selection ERROR",
JOptionPane.ERROR_MESSAGE);
createAccount();
}
} else
System.exit(0);
}
private void authenticateExistingUser() {
Object[] message = { "Username:", username, "Password:", password, adminButton, customerButton };
int option = JOptionPane.showConfirmDialog(null, message, "Authenticate", JOptionPane.OK_CANCEL_OPTION);
boolean found = false;
if (option == JOptionPane.OK_OPTION) {
if (!(adminButton.isSelected()) && (!(customerButton.isSelected()))) {
JOptionPane.showMessageDialog(null, "Please authenticate as Customer or Admin!", "Selection ERROR",
JOptionPane.ERROR_MESSAGE);
authenticateExistingUser();
} else if (adminButton.isSelected()) {
for (User user : usersData.getUsers()) {
if ((user.isAdmin()) && username.getText().equals(user.getName())
&& (password.getText().equals(user.getPassword()))) {
new AdminFrame(user.getName());
found = true;
}
}
if (!found) {
{
JOptionPane.showMessageDialog(null, "Incorrect username or password for Admin Account!",
"Admin Authentication ERROR", JOptionPane.ERROR_MESSAGE);
authenticateExistingUser();
}
}
} else if (customerButton.isSelected()) {
for (User user : usersData.getUsers()) {
if ((user.isCustomer()) && username.getText().equals(user.getName())
&& (password.getText().equals(user.getPassword()))) {
new CustomerFrame(user.getName());
found = true;
}
}
if (!found) {
{
JOptionPane.showMessageDialog(null, "Incorrect username or password for Customer Account!",
"Customer Authentication ERROR", JOptionPane.ERROR_MESSAGE);
authenticateExistingUser();
}
}
}
} else if (option == JOptionPane.CANCEL_OPTION) {
System.exit(0);
}
}
}